package spring.demo7.diy.annotation;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;

@Aspect
public class DIYAnnotationAspect {

	@Pointcut(value = "execution(* SpringCode7.SpringCode7.TestBean.*(..))")
	public void master() {}
	
	/**
	 *  必须是 TestBean的方法 并且时 有 MyAnnotation 注解的方法 
	 * @param jp 被代理的对象 
	 * @param sy 相当于 注解 的变量名 随意
	 * @param ret 代理对象的放法返回 值
	 */
	@AfterReturning(pointcut="master()&&@annotation(sy)",returning="ret")
	public void afterReturningAdvice(JoinPoint jp,MyAnnotation sy, Object ret) {
		
		System.out.println(jp.getSignature().getName());  
        String className = jp.getTarget().getClass().toString();//获取目标类名  
        System.out.println("className:" + className);
        String signature = jp.getSignature().toString();//获取目标方法签名  
        System.out.println("signature:" + signature);
		System.out.println(sy.name() + "做了" + sy.doing());
	}
}
